<?php

class MesasController extends AppController {
    var $name = 'Mesas';

    public $helpers = array('Js');
    public $components = array('RequestHandler','Paginator');
    // paginado de grilla
    public $paginate = null;
  
    public function nuevo() {
        $this->cargarParametros();
        $this->setMatrizMesas();

        if (!empty($this->request->data)) {
            // Save logic goes here
            $this->request->data['Mesa']['activo'] = 1;
            $this->request->data['Mesa']['estado'] = 0;
            $this->Mesa->create();
            if ($this->Mesa->save($this->data)) {
                $this->Session->setFlash('La mesa fue creada.');
                $this->redirect(array('action' => 'index'));
            } 
        } else {
            $max_codigo = $this->Mesa->find('first', array('fields' => 'MAX(Mesa.codigo) as codigo'));
            if (!isset($max_codigo[0]['codigo'])) { $max_codigo[0]['codigo'] = 0; }
            
            $this->request->data['Mesa']['codigo'] = $max_codigo[0]['codigo'] + 1; 
        }
        
    }
    
    function index() {            
        $this->cargarParametros();
        $this->setMatrizMesas();
                       
        // LOGICA PARA LISTADO MESAS
        $condiciones = array();
        if (!empty($this->data)) {
                       
            if (!empty($this->data['Mesas']['filtro_codigo'])) {
                $condiciones['Mesa.codigo'] = $this->data['Mesas']['filtro_codigo'];
            }
            if (!empty($this->data['Mesas']['filtro_estado'])) {
                //solo las mesas abiertas
                if ($this->data['Mesas']['filtro_estado'] == 1) $condiciones['Mesa.estado'] = 0; 
            }
            $condiciones['Mesa.activo'] = $this->data['Mesas']['filtro_activo'];
            
            $this->paginate = array(
                    'limit' => 11,
                    'order' => array('Mesa.codigo' => 'asc'),
                    'conditions' => $condiciones);            
        } else {
            $condiciones['Mesa.estado'] = 1; 
            $condiciones = array('Mesa.activo' => 1);

            $this->paginate = array(
                    'limit' => 11,
                    'order' => array('Mesa.codigo' => 'asc'),
                    'conditions' => $condiciones);
        }
        
        $this->Paginator->settings = $this->paginate;    
        $data = $this->Paginator->paginate('Mesa');
        
        $this->set('mesas', $data);
       
        $this->data = $this->Mesa->create(); 
    }
    
    function deshabilitar($id = null) {
        $this->request->data = $this->Mesa->findById($id);
        $this->request->data['Mesa']['activo'] = 0;

        if ($this->Mesa->save($this->data)) {
            $this->Session->setFlash('La mesa fue deshabilitada.');
            $this->redirect(array('action' => 'index'));
        }
    }

    function habilitar($id = null) {
        $this->request->data = $this->Mesa->findById($id);
        $this->request->data['Mesa']['activo'] = 1;
       
        if ($this->Mesa->save($this->data)) {
            $this->Session->setFlash('La mesa fue habilitada.');
            $this->redirect(array('action' => 'index'));
        }
    }

    function editar($id = null) {
        $this->cargarParametros();
        $this->setMatrizMesas();
        
        if (empty($this->request->data)) {
            $this->request->data = $this->Mesa->findById($id);
        } else {
            // Save logic goes here
            if (!empty($this->data)) {
                $this->Mesa->id = $id;
                
                if ($this->Mesa->save($this->data)) {
                    $this->Session->setFlash('La ubicación de la mesa fue actualizada.');
                    $this->redirect(array('action' => 'index'));
                }
            }
        }
    }

    function cargarParametros() {
        // obtengo parametros que necesito: default max 10   
        $default_max_x = 10.0;
        $default_max_y = 10.0;

        $this->loadModel('Parametro');

        $max_x = $this->Parametro->find('first', array('conditions' => array('Parametro.param_nombre' => 'max_x'),'fields' => array('Parametro.valor')));
        $max_y = $this->Parametro->find('first', array('conditions' => array('Parametro.param_nombre' => 'max_y'),'fields' => array('Parametro.valor')));

        if (!isset($max_x['Parametro']['valor'])) { $max_x['Parametro']['valor'] = $default_max_x; }
        if (!isset($max_y['Parametro']['valor'])) { $max_y['Parametro']['valor'] = $default_max_y; }

        $this->set('max_pos_x', $max_x['Parametro']['valor']);
        $this->set('max_pos_y', $max_y['Parametro']['valor']);
    }    
    
    function setMatrizMesas() {
        $mesas_grilla = $this->Mesa->find('all');
                
        // LOGICA PARA LA MATRIZ 
        // inicializo valores de matriz con datos de mesas
        $m_codigo = array();
        $m_estado = array();
        
        foreach ($mesas_grilla as $mesa):          
            $m_codigo[$mesa['Mesa']['pos_x']][$mesa['Mesa']['pos_y']] = $mesa['Mesa']['codigo'];
            if ($mesa['Mesa']['activo'] == 1) {
                $m_estado[$mesa['Mesa']['pos_x']][$mesa['Mesa']['pos_y']] = $mesa['Mesa']['estado'];
            } else {
                $m_estado[$mesa['Mesa']['pos_x']][$mesa['Mesa']['pos_y']] = 3;
            }
        endforeach; 
        
        $this->set('m_codigo', $m_codigo);
        $this->set('m_estado', $m_estado);      
    }
    
}
?>
